package com.dianrui.operation;

import android.app.Application;
import android.content.Context;
import android.os.Build;
import android.os.StrictMode;
import android.support.multidex.MultiDex;
import android.util.Log;

import com.dianrui.operation.adapter.SecretProtocolAdapter;
import com.dianrui.operation.util.GlideImageLoader;
import com.dianrui.operation.util.Static;
import com.tbit.tbitblesdk.Bike.TbitBle;
import com.tencent.bugly.crashreport.CrashReport;
import com.xuexiang.xhttp2.XHttpSDK;

import java.util.Set;

import cn.finalteam.galleryfinal.CoreConfig;
import cn.finalteam.galleryfinal.FunctionConfig;
import cn.finalteam.galleryfinal.GalleryFinal;
import cn.finalteam.galleryfinal.ImageLoader;
import cn.finalteam.galleryfinal.ThemeConfig;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.TagAliasCallback;


public class MyApplication extends Application {
    private static FunctionConfig functionConfig;
    private ImageLoader imageloader;
    private CoreConfig coreConfig;

    @Override
    public void onCreate() {
        super.onCreate();
        XHttpSDK.init(this);
        XHttpSDK.setBaseUrl(Constant.BASEURL);
        TbitBle.initialize(getApplicationContext(), new SecretProtocolAdapter());
        repairAndroidOsFileUriExposedException();
        initCameraConfig();
        CrashReport.initCrashReport(getApplicationContext(), "317929b7ca", true);
        CrashReport.setIsDevelopmentDevice(getApplicationContext(), BuildConfig.DEBUG);
        initJiGuang();
        Static.CONTEXT = this;

    }



    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

    public void repairAndroidOsFileUriExposedException() {
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
            builder.detectFileUriExposure();
        }
    }

    public void initCameraConfig() {
        if (functionConfig == null) {
            //配置功能
            functionConfig = new FunctionConfig.Builder().setMutiSelectMaxSize(9)//配置多选数量
                    .setEnableEdit(true)//开启编辑功能
                    .setEnableCrop(true)//开启裁剪功能
                    .setEnableRotate(false)//开启旋转功能
                    .setEnableCamera(false)//开启相机功能
                    .setCropSquare(true)//裁剪正方形
                    .setRotateReplaceSource(false)//配置选择图片时是否替换原始图片，默认不替换
                    .setCropReplaceSource(false)//配置裁剪图片时是否替换原始图片，默认不替换
                    .setForceCrop(false)//启动强制裁剪功能,一进入编辑页面就开启图片裁剪，不需要用户手动点击裁剪，此功能只针对单选操作
                    .setForceCropEdit(true)//在开启强制裁剪功能时是否可以对图片进行编辑（也就是是否显示旋转图标和拍照图标）
                    .setEnablePreview(true)//是否开启预览功能
                    .build();
            //配置imageloader
            imageloader = new GlideImageLoader();
            //核心配置
            coreConfig = new CoreConfig.Builder(getApplicationContext(), imageloader,
                    /*设置主题*/
                    new ThemeConfig.Builder().setTitleBarBgColor(getResources().getColor(R.color.gray)).build()).setFunctionConfig(functionConfig).build();
            GalleryFinal.init(coreConfig);
        }
    }

    public static FunctionConfig getFunctionConfig() {
        return functionConfig;
    }


    public void initJiGuang() {
        JPushInterface.init(this);
        JPushInterface.setDebugMode(true);
    }

    /**
     * 设置别名
     *
     * account
     */
    public static void initJiGuangUser(final String account, Context context) {
        JPushInterface.setAlias(context, account, new TagAliasCallback() {
            @Override
            public void gotResult(int code, String s, Set<String> set) {
                switch (code) {
                    case 0:
                        Log.e(account + "别名注册成功", s);
                        // 建议这里往 SharePreference 里写一个成功设置的状态。成功设置一次后，以后不必再次设置了。
                        break;
                    case 6002:
                        Log.e(account +"别名注册失败了", s);
                        break;
                    default:
                        break;

                }
            }
        });
    }


}
